package tk.mybatis.web.service.impl;

import com.sun.istack.internal.NotNull;
import org.apache.ibatis.session.RowBounds;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import tk.mybatis.web.mapper.DictMapper;
import tk.mybatis.web.model.SysDict;
import tk.mybatis.web.service.DictService;

import java.util.List;

/**
 * DictService 接口的实现类 DictServiceImpl
 * Service 的实现类中需要添加 @Service 注解，集成 Spring 时配置过自动扫描包，包名是 tk.mybatis.web.service.impl，DictServiceImpl 实现类所在的包就是符合这个包
 * 名规则的，加上注解后，Spring 在初始化时就会扫描到这个类，然后由 Spring 管理这个类。因为配置了自动扫描 Mapper 接口，所以在 Service 层可以直接通过以下代码注入 Mapper。
 *     @Autowired
 *     private DictMapper dictMapper;
 * 通过自动扫描 Mapper 和自动注入可以更方便地使用 MyBatis。
 */
@Service
public class DictServiceImpl implements DictService {

    @Autowired
    private DictMapper dictMapper;

    @Override
    public SysDict findById(@NotNull Long id) {
        return dictMapper.selectByPrimaryKey(id);
    }

    @Override
    public List<SysDict> findBySysDict(SysDict sysDict, Integer offset, Integer limit) {
        RowBounds rowBounds = RowBounds.DEFAULT;
        if (offset != null && limit != null) {
            rowBounds = new RowBounds(offset, limit);
        }
        return dictMapper.selectBySysDict(sysDict, rowBounds);
    }

    @Override
    public boolean saveOrUpdate(SysDict sysDict) {
        if(sysDict.getId() == null) {
            return dictMapper.insert(sysDict) == 1;
        } else {
            return dictMapper.updateById(sysDict) == 1;
        }
    }

    @Override
    public boolean deleteById(@NotNull Long id) {
        return dictMapper.deleteById(id) == 1;
    }
}
